Phase interpolators take as their input a relatively small number of clock signals, which all have the same frequency, and with equally spaced phase offsets. For example, one phase interpolator might have an input of eight different clock signals, where the phases of the each of the eight different clock signals are forty-five degrees apart, one from the next. The phase interpolator can “add” the phases of the different input signals in such a way as to create an output clock signal with a selectable phase offset. The possible number of selectable output phases from the phase interpolator varies by design, such as 128 phases at 2.8125 degree spacing.
A phase sequencer can be used to select the output phase of the phase interpolator, and can operate to change the selected output phase. In some applications it is desirable that the change in the output phase of the phase interpolator is accomplished as a regularly repeating progression. By regularly sequencing the output phase of the phase interpolator, an effective frequency offset can be observed on the output of the phase interpolator with regard to the frequency of the clocks going into the phase interpolator.
Large frequency offsets can be obtained by jumping a programmed number of selectable phases every update period. The largest frequency offset is obtained by jumping the maximum number of phases possible within the shortest update period. The value of the largest offset is determined by finding (1) the maximum possible phase jump that the phase interpolator is designed to produce without either greatly distorting its output clock (such as by not providing smooth rising and falling edges) or creating a glitch on the output clock signal, and (2) how often the phase updates can occur.
For example, a given phase interpolator may have 128 selectable output phases, and be able to jump its output phase by ten phases every clock period. The maximum selectable frequency offset would then be: +/−(10/128)=+/−7.8125%.
Small frequency offsets are obtained by jumping a single phase less than once per clock period. For example, by making ten single-phase jumps over a period of thirty-two clock cycles.
The precision of the frequency offset can be controlled by the design of the phase sequencer. For example, if a phase sequencer controls a 128-phase phase interpolator, and can be programmed to jump every 210 clock cycles, the error of the frequency offset control (also called the precision of the frequency offset) is: 1/(128×210)=½17, or less than eight parts per million.
The two concepts described above, of the largest frequency offset and the smallest frequency offset, can be merged. In other words, a phase sequencer can be constructed to jump a desired number of phases every clock period, where the jump size is occasionally altered by some value (such as one) to improve the precision. For example, a sequencer can be programmed to jump four phases every three clock periods, by having a constant jump of one phase every clock period, and then increasing the jump size by one phase every third clock period, providing a phase jump sequence of +1,+1,+2,+1,+1,+2, and so forth.
What is needed, therefore, is a design for a phase sequencer that can control the sequenced output of a phase interpolator with a high degree of precision.